﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using SIIE_ERP.Codigo.Login;
using SIIE_ERP.Codigo;
using SIIE_ERP.BaseDatos;
using SIIE_ERP.BaseDatos.Configuracion;
using System.Data;
using System.Data.OleDb;

namespace Elysium.Demo.Login
{
    /// <summary>
    /// Interaction logic for Login.xaml
    /// </summary>
    public partial class Login : Elysium.Controls.Window
    {
        public Login()
        {
            InitializeComponent();             
        }        

        // Detectar el enter en el Passwordbox
        private void ContrasenaLogin_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key != Key.Return && e.Key != Key.Enter)
                return;
            e.Handled = true;
            // Una vez detectado el enter, procede con el inicio de sesion
            IniciarSesion_Click(sender, e);
        }

        private void IniciarSesion_Click(object sender, RoutedEventArgs e)
        {
            string Usuario = UsuarioLogin.Text;
            string Contrasena = ContrasenaLogin.Password;
            
            // Realiza la consulta a la base de datos
            Respuesta respuesta = LoginCode.ValidaUsuario(Usuario, Contrasena);

            if (respuesta.Id == 4)
            {
                if(Usuario.Equals("admin"))
                {
                    MessageBox.Show("Su licencia ha caducado.");
                    dbo_Sec_Usuario u = new dbo_Sec_Usuario();

                    UsuarioActivo UsuarioA = new UsuarioActivo(Usuario);
                    UsuarioA.IdUsuario = u.Get_Id_Usuario(Usuario);

                    MainWindow_NoLicencia mainWindow = new MainWindow_NoLicencia(UsuarioA);
                    mainWindow.Show();
                    this.Hide();
                    return;
                }
            }
            
            if (respuesta.Id == 5)
            {
                MessageBox.Show(respuesta.Mensaje);
                respuesta.Id = 6;
            }

            if (respuesta.Id == 6) // Autenticacion OK
            {
                // Obtenemos el ID del usuario autenticado
                // Creamos la ventana principal y le mandamos una instancia del usuario autenticado
                dbo_Sec_Usuario u = new dbo_Sec_Usuario();                

                UsuarioActivo UsuarioA = new UsuarioActivo(Usuario);
                UsuarioA.IdUsuario = u.Get_Id_Usuario(Usuario);

                MainWindow mainWindow = new MainWindow(UsuarioA);
                mainWindow.Show();
                this.Hide();                
            }
            else
            {
                // En caso de error en la autenticacion, muestra el mensaje de error correspondiente
                MessageBox.Show(respuesta.Mensaje);
            }
            ContrasenaLogin.Password = "";
            
        }

        private void Window_Closed(object sender, EventArgs e)
        {
            Application.Current.Shutdown(0); // Cerrar definitivamente la aplicacion
        }
    }
}
